package com.ynet.middleground.riskmanage.service;


import com.ynet.core.common.ServiceResult;
import com.ynet.middleground.riskmanage.bean.*;
import com.ynet.middleground.riskmanage.dto.PledgeOrderDTO;

import javax.validation.Valid;

/**
 * @InterfaceName PledgeOrReliefPledgeOrderService
 * @Description 冷链及大港-质押监管与解除质押监管（静态/动态/换货）
 * @Author zhangyongbin
 * @Date 2020/8/19 17:07
 * @Version 1.0
 */
public interface PledgeOrReliefPledgeOrderService {

    /**
     * @Description 冷链及大港-质押监管与解除质押监管（静态）
     * @Author zhangyongbin
     * @Date 2020/8/18 10:36
     * @Param [req] 请求信息
     * @return com.ynet.core.common.ServiceResult
     **/
    ServiceResult<PledgeOrderDTO> staticPledgeOrRelief(@Valid StaticPledgeOrReliefPledgeReq req);

    /**
     * @Description 冷链及大港-质押监管与解除质押监管（动态）
     * @Author zhangyongbin
     * @Date 2020/8/18 10:36
     * @Param [req] 请求信息
     * @return com.ynet.core.common.ServiceResult
     **/
    ServiceResult<PledgeOrderDTO> dynamicPledgeOrRelief(@Valid DynamicPledgeOrReliefPledgeReq req);

    /**
     * @Description 冷链及大港-换货指令
     * @Author zhangyongbin
     * @Date 2020/8/18 10:36
     * @Param [req] 请求信息
     * @return com.ynet.core.common.ServiceResult
     **/
    ServiceResult<PledgeOrderDTO> changeGoodsOrder(@Valid ChangeGoodsOrderReq req);

    /**
     * 静态质押/解除结果同步
     *
     * @param req 静态质押监管及解除结果同步信息
     * @return 以 success 字段为准，true 为成功，false 则为失败
     * @author liulx
     * @date 2020-08-18 16:53:41
     */
    ServiceResult<Object> syncPledgeStatic(@Valid SyncPledgeStaticReq req);

    /**
     * 动态质押/解除结果同步
     *
     * @param req 动态质押监管及解除结果同步信息
     * @return 以 success 字段为准，true 为成功，false 则为失败
     * @author liulx
     * @date 2020-08-19 14:58:35
     */
    ServiceResult<Object> syncPledgeDynamic(@Valid SyncPledgeDynamicReq req);

    /**
     * 换货结果同步
     *
     * @param req 换货指令结果同步请求信息
     * @return 以 success 字段为准，true 为成功，false 则为失败
     * @author liulx
     * @date 2020-08-19 20:33:07
     */
    ServiceResult<Object> syncExchange(@Valid SyncExchangeReq req);

}
